草庐IT

C++ unique_ptr 和映射

全部标签

c++ - 从 Qt 5.6 切换到 Qt 5.7 - 命名空间 std 中的 "no member ' make_unique'

我有一个CMakeQt项目,它使用了多个c++14功能,包括std::make_unique。通常这将通过以下方式处理:LIST(APPENDCMAKE_CXX_FLAGS-std=c++14)或ADD_COMPILE_OPTIONS(-std=c++14)我想将项目从5.6版升级到5.7版,但在测试构建期间出现多次失败并出现错误nomember'make_unique'innamespacestd我已验证所有适当的header和编译选项都已到位,并排除了任何环境问题。使用Qt5.7绝对是个问题。有什么解决方法吗? 最佳答案 原来这

c# - 将 shared_ptr 与托管语言引用进行比较

有人可以向C++程序员解释Java(以及C#)引用和shared_ptr(来自Boost或C++0x)之间最重要的区别。我或多或少知道shared_ptr是如何实现的。我很好奇以下方面的差异:1)性能。2)骑自行车。shared_ptr可以循环(A和B持有指向彼此的指针)。在Java中可以骑自行车吗?3)还有什么吗?谢谢。 最佳答案 性能:shared_ptr性能不错,但根据我的经验,它的效率略低于显式内存管理,主要是因为它是引用计数的,并且必须分配引用计数以及。它的性能如何取决于很多因素,它与Java/C#垃圾收集器相比的性能如何

c++ - 如何将指针映射公开为 const 指针映射?

我有一个类,其中包含一个std::map指针作为成员。现在,我想以只读方式公开该成员:map和指向的对象都不允许修改。在内部,我需要这些指针是非常量的,并且我想将它们公开为常量。我确实有一个至少可以编译的解决方案,但我想知道我是否会遇到任何隐藏的问题。classA{public:conststd::map&GetMap()const{return*(reinterpret_cast*>(&m_Map));}private:std::mapm_Map;};我能想到一个可能的问题:如果std::map的内部布局对于指针映射和const指针映射不同,那么这将导致丑陋的错误。但我想不出任何理智

c++ - 我应该在使用之前检查 boost::shared_ptr 或 std::shared_ptr 吗?

voidf(boost::shared_ptrptr){if(ptr)//shouldwecheck?//dosomething}voidf2(int*p){if(p)//goodpracticetocheckbeforeusingit//dosomething}问题:我们是否应该在使用前验证shared_ptr? 最佳答案 没有。如果在函数的约定中它必须是有效的,那么引起人们注意调用者有错误这一事实的最快方法就是崩溃。尽早失败。 关于c++-我应该在使用之前检查boost::share

c++ - 将 C++ 映射复制到键和值 vector 中

我有一个map并且我希望第一列i.e(*it).first被推回一个vector然后(*i​​t)->second被推回到另一个vector中这是最好的方法吗?std::vectortest;for(it=mymap.begin();it!=mymap.end();it++){test.push_back((*it).first);}我的另一个问题是如果我有一个循环即我如何将所有整数i插入到(*i​​t).first中?for(inti=0;i我想在(*i​​t).first中有一些整数,并在(*i​​t).second;中有相关值 最佳答案

线性映射与矩阵:宇宙物理学应用

1.背景介绍线性映射和矩阵在数学和计算机科学中具有广泛的应用,尤其是在线性代数、计算机图形学、机器学习等领域。在宇宙物理学中,线性映射和矩阵也发挥着重要的作用,帮助我们理解宇宙的运动、力学和相互作用。在这篇文章中,我们将深入探讨线性映射与矩阵在宇宙物理学中的应用,揭示其中的数学原理和实际操作。2.核心概念与联系线性映射和矩阵在宇宙物理学中的核心概念是线性代数。线性代数是一门数学分支,研究向量和矩阵的加法、数乘和矩阵乘法等线性运算。在宇宙物理学中,线性代数用于描述物体的运动、力学和相互作用。2.1线性映射线性映射是将一个向量空间到另一个向量空间的一种映射,它满足以下两个条件:对于任意向量$v$和

Elasticsearch:存在很多映射时的慢速映射创建

我有很多映射的索引(大约14000)。创建新的映射拍摄>10秒。在这种情况下,有没有办法加快映射的创建,或者Elasaticsearch并不是为许多映射而设计的?看答案请注意,映射类型的公民最终将从Elasticsearch中删除(ES6中的软删除,在ES7中进行了硬删除),即您最终将获得只有一个映射的索引。您可以在此处阅读有关此破裂变化背后的原因的更多信息:https://www.elastic.co/blog/index-type-parent-child-child-now-now-future-in-elasticsearch如果您的映射有14k,那么您的稀疏度很高,这可能是导致

c++ - 多态性和 shared_ptr 成员

测试多态性&虚函数&shared_ptr,我试图理解以下最小示例描述的情况。classB{public://DefinitionofclassBvirtualvoidsomeBMethod(){//Makeaburger};};classC:publicB{public://DefinitionofclassCvoidsomeBMethod(){//Makeapizza};};classA{public:A(B&SomeB):Member(std::make_shared(SomeB)){};std::shared_ptrMember;};现在,我们基本上可以拥有intmain(){C

c++ - 内存映射文件是否为大缓冲区提供了优势?

我的程序处理需要存储在连续内存(几千兆字节)中的大型数据集。使用std::allocator(即malloc或new)分配内存会导致系统停顿,因为大部分虚拟内存被保留并且物理内存被填满上。由于该程序一次只能在一小部分上工作,我的问题是使用内存映射文件是否会提供优势(即mmap或Windows等效文件。)这就是创建一个大的稀疏临时文件并将其映射到虚拟内存。或者是否有另一种技术可以改变系统的分页策略,以便一次将更少的页面加载到物理内存中。我试图避免构建一次加载文件的多个部分的流机制,而是依赖于系统的vm分页。 最佳答案 是的,mmap具

c++ - unique_ptr vs 类实例作为成员变量

有一个类SomeClass,它包含一些数据和操作这些数据的方法。并且必须使用一些参数创建它,例如:SomeClass(intsome_val,floatanother_val);还有另一个类,比如Manager,它包括SomeClass,并大量使用它的方法。那么,在性能(数据局部性、缓存命中等)方面会更好,将SomeClass的对象声明为Manager的成员并使用成员初始化在Manager的构造函数中或将SomeClass的对象声明为unique_ptr?classManager{public:Manager():some(5,3.0f){}private:SomeClasssome;